package servlets;
import logica.*;
import dataSet.*;
import entidades.*;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import librerias.*;
/**
 * Servlet implementation class MostrarMateriasCarreras
 */
@WebServlet("/OpcionesAlumnos")
public class OpcionesAlumnos extends HttpServlet {
	private static final long serialVersionUID = 1L;
	
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public OpcionesAlumnos() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		PrintWriter out = response.getWriter();
		
		
		HttpSession session = request.getSession(true);	    
		
		Usuario usuarioActual = (Usuario)session.getAttribute("currentSessionUser");
		
			
		
	if (usuarioActual !=null){
		String entradaMenuAlumno = request.getParameter("o");
		if (entradaMenuAlumno != null){ 
		int opcion = Integer.parseInt(entradaMenuAlumno);
		switch(opcion){
			case 1://mostrarmenu
				mostrarMaterias(response,request, usuarioActual);
				request.getRequestDispatcher("MateriasCarrera.jsp").forward(request, response); //Me voy a la pag que muestra las materias de la carrera
				break;
			case 2: //incripcion materias
				cargarMateriasIncripcion(response,request, usuarioActual);
				request.getRequestDispatcher("MateriasInscripcion.jsp").forward(request, response); //Me voy a la pag que muestra las materias Inscripcion
				break;
			case 3:
				mostrarInscripciones(response,request,usuarioActual);
				request.getRequestDispatcher("alumInscripcionesParaBorrar.jsp").forward(request, response);
				break;
			case 4:
				request.getRequestDispatcher("ModificarClave.jsp").forward(request, response);
				break;
			case 5: //Se deslogea el usuario
				session.removeAttribute("currentSessionUser"); //borro la session y se deslogea
				request.getRequestDispatcher("PaginaInicio.jsp").forward(request, response); //Me voy a PaginaInicio.jsp de nuevo
				break;
			
			case 77://ver comisiones
				String idMateria = request.getParameter("idm");
				
				
				int idMateriaInt = Integer.parseInt(idMateria);

				comisionInscripcionMateria(idMateriaInt,response,request);
				
				request.getRequestDispatcher("alumComisionesMateriaInscripcion.jsp").forward(request, response); //Me voy a materia comision.jsp 

				break;
			case 88: //Inscribirse en comision
				int idComision = Integer.parseInt(request.getParameter("idc"));
				
				inscripcionMateriaCurso(idComision,response,request,usuarioActual);
				//out.println(idComision);
				break;
			case 99: //elimiar inscripcion
				int idCurso = Integer.parseInt(request.getParameter("idComisionEliminar"));
				eliminarInscripcion(idCurso,response,request,usuarioActual);
				break;

		}	
		
		}
		
	
	
	
	}else{
			out.println("Error. No logeado");
			response.sendRedirect("Login.jsp");
		}
	
	
	
	
	}
	
	public static void eliminarInscripcion(int idCurso,HttpServletResponse response,HttpServletRequest request,Usuario usuarioActual) throws IOException, ServletException{
		HttpSession session = request.getSession(true);	

		PrintWriter out = response.getWriter();
		final Curso curso;
		loCursos objLoCursos = new loCursos();
		curso = objLoCursos.getCurso(idCurso);
		int cupo = curso.getCupo();
		objLoCursos.borrarInscripcion(idCurso, usuarioActual.getId());
		cupo = cupo +1;
        objLoCursos.actualizarCupo(idCurso, cupo);
    	String msg = ("La inscripción a sido Borrada. <br/> <b>Redireccionando</b>");
		session.setAttribute("msg", msg);
		session.setAttribute("direccion", "OpcionesAlumnos?o=3");
		request.getRequestDispatcher("Mensajes.jsp").forward(request, response);
		
	}
	
	
	/*materias en las q el alumno esta inscripto*/
	public static void mostrarInscripciones(HttpServletResponse response,HttpServletRequest request,Usuario usuarioActual) throws IOException, ServletException{
		PrintWriter out = response.getWriter();
		loCursos objLoCursos;
		objLoCursos = new loCursos();
		ArrayList<Curso> cursosInsc= objLoCursos.RecuperarInscripciones(usuarioActual.getId());
		for(Curso curso: cursosInsc){
			out.println(curso.getId());
		}
		
		request.setAttribute("inscripciones", cursosInsc);

		
	}
	public static void inscripcionMateriaCurso(int idCurso,HttpServletResponse response,HttpServletRequest request,Usuario usuarioActual) throws IOException, ServletException{
		HttpSession session = request.getSession(true);	

		PrintWriter out = response.getWriter();
		final Curso curso;
		loCursos objLoCursos = new loCursos();
		curso = objLoCursos.getCurso(idCurso);
		int cupo = curso.getCupo();
		if (cupo >=0){
			objLoCursos.registrarInscripcion(idCurso, usuarioActual.getId());
			cupo = cupo - 1;
			objLoCursos.actualizarCupo(idCurso, cupo);
			String msg = (usuarioActual.getApellido()+", " +usuarioActual.getNombre()+ " has sido inscripto. <br/> <b>Redireccionando</b>");
			session.setAttribute("msg", msg);

			
		}else{
			String msg =("no hay cupo");
			session.setAttribute("msg", msg);
			}
		session.setAttribute("direccion", "OpcionesAlumnos?o=2");

		request.getRequestDispatcher("Mensajes.jsp").forward(request, response);

	}
	
	public static void comisionInscripcionMateria(int idMateria,HttpServletResponse response,HttpServletRequest request) throws IOException{
		PrintWriter out = response.getWriter();

		loCursos objLoCursos = new loCursos();
		//out.println(idMateria);

       /* ArrayList<Curso> cursos =  objLoCursos.recuperarCursosParaGrilla(idMateria); // trae cursos
		out.println(cursos);
        request.setAttribute("cursosInscripcion", cursos);*/
		  
		
		
		
		ArrayList<CursoComision> cursos =  objLoCursos.recuperarCursoComisiones(idMateria); // trae cursos
				//out.println(cursos);
		        request.setAttribute("cursosInscripcion", cursos);
				
	}
	public static void cargarMateriasIncripcion(HttpServletResponse response,HttpServletRequest request,Usuario usuarioActual){
		
		HttpSession session = request.getSession(true);	
		Persona personaActual = (Persona)session.getAttribute("currentSessionPersona");	
        
		loMaterias objLoMaterias = new loMaterias();
		ArrayList<Materia> lstMaterias = objLoMaterias.recuperarMateriasParaInscripcion(personaActual.getId());
		request.setAttribute("materiasInscripcion", lstMaterias);

	}
		
	public static void mostrarMaterias(HttpServletResponse response,HttpServletRequest request,Usuario usuarioActual) throws IOException{
		HttpSession session = request.getSession(true);	
		Persona personaActual = (Persona)session.getAttribute("currentSessionPersona");	
		
		loMaterias objLoMaterias = new loMaterias();
		ArrayList<MateriasCarrera> lstMaterias = objLoMaterias.recuperarMateriasDeLaCarrera(personaActual.getIdPlan());
		request.setAttribute("materiasCarrera", lstMaterias);
	}
	
	

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
			// TODO Auto-generated method stub

	
	
	}

}
